﻿Imports DESTAJO.ENTIDAD
Imports System.Data
Imports System.Reflection
Imports System.Collections.Generic
Imports System.IO
Imports System.Text

Public Class UCObjeto
    Public Enum Orientacion
        Horizontal = 0
        Vertical = 1
    End Enum

    Public Function ListarPropiedades(ByVal oBE As Object) As BEParametroCad()
        Dim lobeParametrosCad As New List(Of BEParametroCad)
        Dim Propiedades() As PropertyInfo = oBE.GetType.GetProperties
        Dim Propiedad As PropertyInfo
        For Each Propiedad In Propiedades
            Dim obeParametroCad As New BEParametroCad
            obeParametroCad.Codigo = Propiedad.PropertyType.ToString
            obeParametroCad.Nombre = Propiedad.Name
            lobeParametrosCad.Add(obeParametroCad)
        Next
        Return (lobeParametrosCad.ToArray)
    End Function

    Public Sub Grabar(ByVal oBE As Object, ByVal Archivo As String, ByVal vOrientacion As Orientacion, Optional ByVal Separador As String = ";")
        Dim Propiedades() As PropertyInfo = oBE.GetType.GetProperties
        Dim Propiedad As PropertyInfo
        Dim Nombre As String
        Dim Valor As Object
        Dim sb As New StringBuilder
        For Each Propiedad In Propiedades
            Nombre = Propiedad.Name
            Valor = Propiedad.GetValue(oBE, Nothing)
            If vOrientacion = Orientacion.Horizontal Then
                sb.Append(Valor)
                sb.Append(Separador)
            Else
                sb.Append(Nombre)
                sb.Append(" = ")
                sb.Append(Valor.ToString)
                sb.AppendLine()
            End If
        Next
        If vOrientacion = Orientacion.Horizontal Then
            sb.Remove(sb.Length, Separador)
        Else
            sb.Append(New String("=", 100))
        End If
        Using sw As New StreamWriter(Archivo, True)
            sw.Write(sb.ToString)
        End Using
    End Sub
End Class
